package LecteurMp3;
import java.util.*;




public class Timer extends Observable implements Runnable
{
	//Classe qui décrit une montre avec un affichage des aiguilles

	private int dureeSeconde;           // Durée de la seconde en msec.
	private int minutes       = 0;       	// Compteurs de la pendule
	private int secondes      = 0;
	private int heures        = 0;
	private int totalSecondes = 0;
	private int fadeOut       = 0;
	private boolean stop      = false;

	private Thread activite;

	//------------------------------------------------------------------------
	public Timer (int valSeconde) {
		dureeSeconde = valSeconde;
		fadeOut = -1;
	}
	
	public Timer (int valSeconde, int fadeOut) {
		dureeSeconde = valSeconde;
		this.fadeOut = fadeOut;
	}

	public void demarrer() {
		activite = new Thread(this);
		activite.start();
	}

	public void stop() {
		stop = true;
	}
	
	public void reset() {
		minutes       = 0;
		secondes      = 0;
		heures        = 0;
		totalSecondes = 0;
	}

	public int getHeures() {
		return heures;
	}

	public int getMinutes() {
		return minutes;
	}

	public int getSecondes() {
		return secondes;
	}
	
	public int getTotalSecondes() {
		return totalSecondes;
	}


	public boolean isAlive() {
		return activite.isAlive();
	}
	

	public void incrementerSecondes(){
		secondes ++;
		totalSecondes++;
		if (secondes == 60) {   
			secondes = 0;
			incrementerMinutes();
		}

	}

	public void incrementerMinutes() {
		minutes = ++minutes % 60 ;
		if (minutes == 0) {
			heures = ++heures % 24;
		}
	}

	public void fadeOut() {
		setChanged();
		notifyObservers();
	}
	
	public synchronized void run()
	{
		while(!stop)
		{
			incrementerSecondes();
			Glb.pause(dureeSeconde);
			if((totalSecondes >= fadeOut)) {
				System.out.println("Timer !!!");
				setChanged();
				this.notifyObservers();
				stop = true;
			}
		}
	}

}
